package com.ssy.lingxi.system.service;

import com.ssy.lingxi.common.response.PageData;
import com.ssy.lingxi.common.response.Wrapper;
import com.ssy.lingxi.system.dto.request.*;
import com.ssy.lingxi.system.entity.MemberConfig;
import com.ssy.lingxi.system.model.request.IdVO;
import com.ssy.lingxi.system.model.request.MemberConfigAddVO;
import com.ssy.lingxi.system.model.request.MemberConfigUpdateVO;
import com.ssy.lingxi.system.model.response.MemberConfigGetVO;
import com.ssy.lingxi.system.model.response.MemberConfigTagVO;
import org.springframework.web.bind.annotation.RequestBody;

import javax.servlet.http.HttpServletRequest;
import java.util.List;

/**
 * 会员注册业务处理接口
 *
 * @author wrc
 * @date 2020/5/9
 */
public interface MemberConfigService {
    /**
     * 查询会员注册资料标签列表
     * @return 查询结果
     */
    Wrapper<List<MemberConfigTagVO>> getMemberConfigTagList();

    /**
     * 查询会员注册资料校验规则列表
     * @return 查询结果
     */
    Wrapper<List<MemberConfigTagVO>> getMemberConfigCheckRuleList();

    /**
     * 新增会员注册资料
     * @return 新增结果
     */
    Wrapper<Void> addMember(MemberConfigAddVO configVO, HttpServletRequest httpServletRequest);

    /**
     * 修改会员配置信息
     */
    Wrapper<Void> updateMember(MemberConfigUpdateVO updateVO);

    /**
     * 查询会员注册资料信息
     * @param idVO 接口参数
     * @return 查询结果
     */
    Wrapper<MemberConfigGetVO> getMemberConfig(IdVO idVO);

    /**
     * 查询会员字段配置列表
     * @return 查询结果
     */
    Wrapper<PageData<MemberConfig>> memberList(MemberListRequest request);

    /**
    * 删除会员字段配置
    */
    Wrapper<Void> deleteMember(@RequestBody DeleteMemberConfigRequest request);

    /**
    * 停用启用会员字段配置状态
    * @author wrc
    * @date 2020/7/2
    */
    Wrapper<Void> startRoStopMember(@RequestBody StartRoStopMemberRequest request);

    /**
    * 根据角色ID查询会员字段配置列表
    */
    Wrapper<List<MemberConfig>> memberByRoleIdList(MemberByRoleIdListRequest request);

    /**
    * 配置会员角色和字段关联
    */
    Wrapper<Void> setRoleConfig(@RequestBody SetRoleConfigRequest request);
}
